<!DOCTYPE html>
<html lang="zh-cn">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">




<title>数据库管理 | Miles`s</title>

<link rel="stylesheet" href="https://mada.gitee.io/notes//css/styles.css">

<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" 
integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.js" integrity="sha256-2Kok7MbOyxpgUVvAk/HJ2jigOSYS2auK4Pfzbm7uH60=" crossorigin="anonymous"></script>


<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/zenburn.min.css" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/highlight.min.js" integrity="sha256-/BfiIkHlHoVihZdc6TFuj7MmJ0TWcWsMXkeDFwhi0zw=" crossorigin="anonymous"></script>
<script>hljs.initHighlightingOnLoad();</script>
<script src="https://mada.gitee.io/notes//js/highlight.js"></script>






<div class="container">
    <nav class="navbar level">
      <div class="navbar-brand">
          <a class="nav-item" href="https://mada.gitee.io/notes/"><h1 class="title is-3">Miles`s</h1></a>
      </div>           
      <div class="navbar-menu has-text-centered is-active">
          <div class="navbar-end is-centered">
              
           </div>
      </div>
    </nav>
  </div>
<div class="container">
  <h2 class="subtitle is-6">June 21, 2016</h2>
  <h1 class="subtitle is-size-4-mobile is-size-3-desktop">数据库管理</h1>
  <div class="content">
    

<h2 id="数据库管理系统">数据库管理系统</h2>

<h3 id="第一章-数据库系统概述">第一章 数据库系统概述</h3>

<p><strong>数据模型：</strong> 隐藏许多低级存储细节的高级数据描述结构的集合。
<strong>模式：</strong> 基于数据模型的数据描述。</p>

<p><strong>三级抽象模式：</strong></p>

<p>1.概念模式。以数据模型的形式描述存储的数据。
2.2.物理模式。描述概念模式中关系在磁盘等存储设备上实际是如何存储的。
3.3.外模式。允许位单个用户和用户组定制数据存取。</p>

<h4 id="事务管理">事务管理</h4>

<p>加锁协议：每一个事务需要遵守的规则集合，以确保即使有几个事务在交叉工作，但它们所产生的结果等同于所有事务按照某种串行顺序执行的结果。</p>

<p>共享锁：可以由两个不同事务同时获取。
互斥锁：没有其他事务能够获得该对象上的任何锁。</p>

<h3 id="第二章-实体联系模型">第二章 实体联系模型</h3>

<p>实体ER：允许我们利用对象和它们之间的联系去描述现实企业的数据。</p>

<h4 id="数据库设计与er图">数据库设计与ER图</h4>

<ol>
<li>数据分析
1.哪些数据需要存储
2.哪些操作是最频繁的
3.哪些性能要求
4.。。。</li>
<li>概念数据库设计
1.在需求分析中得到的数据信息，用来为存储在数据库中的数据开发一个高级描述。
2.通常使用ER模型或类似的高级数据模型来完成。</li>
<li>逻辑数据库设计
1.讲ER模型转换为关系数据库模式。</li>
</ol>

<h4 id="实体-属性和实体集">实体，属性和实体集</h4>

<h3 id="第三章-关系模型">第三章 关系模型</h3>

<p>数据库由一个或多个关系组成，每个关系是行和列组成的表。</p>

<p>1 关系模式：对表的每个列进行描述
2 关系实例：表</p>

<h4 id="码约束">码约束</h4>

<p>候选码：能够唯一确定每条纪录的关系的字段集合称为关系的候选码。
主码（primary key）：
外码：</p>

<h4 id="视图">视图</h4>

<p>可以看成一个关系表，但是其中的纪录没有直接存储在数据库中，而是在需要的时候根据视图定义计算出来的。</p>

<h3 id="第四章-关系代数与演算">第四章 关系代数与演算</h3>

<h4 id="集合操作">集合操作</h4>

<ol>
<li>并</li>
<li>交</li>
<li>差</li>
<li>叉积</li>
</ol>

<h4 id="连接">连接</h4>

<h5 id="条件连接">条件连接（）</h5>

<h5 id="相等连接">相等连接</h5>

<h5 id="自然连接-r和s所有同名字段都相等">自然连接： R和S所有同名字段都相等</h5>

<h4 id="除">除</h4>

<h3 id="第五章-sql-查询-约束与触发器">第五章 SQL：查询，约束与触发器</h3>

<pre><code>select [distinct] select-list
from from-list
where qualification
</code></pre>

<h4 id="select-命令中的表达式和字符串">select 命令中的表达式和字符串</h4>

<p>字符串比较：</p>

<p>= &gt; &lt; 等 按照字母顺序进行。
like 操作通配符  ％（0个或多个）， _(一个任意字符)</p>

<h4 id="union-intersect-except">union, intersect, except</h4>

<p>union: 默认去掉重复，为了保留重复 使用 union all  m＋n
intersect：保留重复， min(m,n)
except：保留重复  m-n</p>

<h4 id="嵌套查询">嵌套查询</h4>

<h4 id="聚集操作符">聚集操作符</h4>

<ol>
<li>count</li>
<li>sum</li>
<li>avg</li>
<li>max</li>
<li>min</li>
</ol>

<p>在sql中如果select 子句中使用聚集操作，那么就只能使用聚集操作符，除非参加查询包含 group by 子句。</p>

<pre><code>select s.name, s.age
from student s
where s.age = (
			select MAX(s2.age) from student s2
        )
</code></pre>

<h4 id="group-by-and-having">group by and having</h4>

<p>having: 规定分组的条件</p>

<pre><code>select [distinct] select_list
from from-list
where qualification
group by grouping-list
having group-qualification
</code></pre>

<h4 id="触发器和主动数据库">触发器和主动数据库</h4>

<p>触发器是一个过程，它对数据库的特定改变进行响应。</p>

<p>一个触发器包含三个部分：
1. 事件。激活触发器的数据库改变
2. 条件。当触发器激活时运行的查询或检测
3. 动作。当触发器被激活并且条件为真时，DBMS要执行的动作。</p>

<h3 id="存储与索引概述">存储与索引概述</h3>

<h4 id="索引">索引</h4>

<p>在磁盘上组织数据纪录的一种数据结构，用于优化某类数据检索的操作。</p>

<p>数据项：代替存储在索引文件中的纪录</p>

<p>3种不同的数据项存储：</p>

<ol>
<li>数据项k*是一个真正的数据纪录</li>
<li>数据项是一个<code>&lt;k,rid&gt;</code>对，其中rid是搜索码值为k的数据纪录的纪录id</li>
<li>数据项是一个<code>&lt;k,rid-list&gt;</code>对，其中rid-list是搜索码值为k的数据纪录的纪录id的列表</li>
</ol>

<h4 id="聚簇索引">聚簇索引</h4>

<p>数据纪录的顺序与某一索引的数据顺序相同或类似，称为聚簇索引，否则，为非聚簇索引。</p>

<p>实际上，数据更新时维护数据的顺序性代价很高，所以文件很少是保持有序的。</p>

<h4 id="主索引与次索引">主索引与次索引</h4>

<p>建立在包含主码的字段集合上的索引称为主索引
其他的索引称为次索引</p>

<p>如果我们知道一个索引没有重复，那么就可以知道其搜索码包含候选码，我们称这样的索引为惟一索引。</p>

<h4 id="索引数据结构">索引数据结构</h4>

<p>基于哈希的索引</p>

<p>纪录被放在不同的捅中，其中一个桶由一个主页构成，或者由一个主页和多个页构成的链组成。
一个纪录属于哪个桶由一个特殊的函数用于搜索码来决定，这个函数成为哈希函数。
给出一个桶号，允许我们进行一到两次磁盘i／o就能检索出该桶的主页</p>

<p>基于树的索引</p>

<p>使用树型的数据结构</p>

<p>树的最下层，叶子层 包含数据项。
所有搜索开始于最顶端的节点－跟节点。
所有非叶子节点都讲搜索定位到正确的叶子节点中。</p>

  </div>
</div>
<div class="container has-text-centered">
    
</div>

<div class="container has-text-centered">
  
</div>
<section class="section">
  <div class="container has-text-centered">
    <p></p>
  </div>
</section>


